package com.projecy.storehouse.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.projecy.storehouse.dao.RepertoryProductFileDao;
import com.projecy.storehouse.dao.ProductUnitDao;
import com.projecy.storehouse.entity.RepertoryProductFile;
import com.projecy.storehouse.entity.ProductUnit;
import com.projecy.storehouse.entity.dto.PageDto;
import com.projecy.storehouse.service.ProductUnitService;
import com.projecy.storehouse.util.RepertoryNumber;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * (ProductUnit)表服务实现类
 *
 * @author makejava
 * @since 2023-03-24 16:46:10
 */
@Service("productUnitService")
public class ProductUnitServiceImpl extends ServiceImpl<ProductUnitDao, ProductUnit> implements ProductUnitService {

    @Autowired
    ProductUnitDao productUnitDao;

    @Autowired
    RepertoryProductFileDao repertoryProductFileDao;


    /**
     * 添加安全库存信息
     *
     * @param productUnit
     * @return
     */
    @Override
    public int insertProductUnit(ProductUnit productUnit) {
        //修改产品档案分配库存标志
        RepertoryProductFile file = new RepertoryProductFile();
        file.setRepertoryMark("待分配");
        file.setProductId(productUnit.getProductId().toString());
        productUnit.setInventoryname(productUnit.getProductName()+" 仓库");
        repertoryProductFileDao.update(file,new QueryWrapper<RepertoryProductFile>().eq("product_id",productUnit.getProductId()));
        //添加安全库存
        //登记时间
        productUnit.setInventoryid(RepertoryNumber.safetyStock());
        productUnit.setRegisterTime(new Date());
        return productUnitDao.insert(productUnit);
    }


    /**
     * 安全库存复核
     * @param productId
     * @return
     */
    @Override
    public int checkProductUnit(Long productId,String mark) {
        RepertoryProductFile file = new RepertoryProductFile();
        ProductUnit unit = new ProductUnit();
       if("审核".equals(mark)){
           //修改产品档案分配库存标志
           file.setRepertoryMark("已分配");
           file.setProductId(String.valueOf(productId));

           //修改安全库存审核标志
           unit.setCheckTime(new Date());
           unit.setCheckMark("已复核");
       }else if("不通过".equals(mark)){
            //修改产品档案分配库存标志
           file.setRepertoryMark("未分配");
           file.setProductId(String.valueOf(productId));

           //修改安全库存审核标志
           unit.setCheckTime(new Date());
           unit.setCheckMark("未通过");
       }
        repertoryProductFileDao.update(file,new QueryWrapper<RepertoryProductFile>().eq("product_id",productId));
        return productUnitDao.update(unit,new QueryWrapper<ProductUnit>().eq("product_id",productId));
    }


    /**
     * 高级查询
     * @param mark
     * @return
     */
    @Override
    public List seacherProductUnit(String mark) {
        QueryWrapper<ProductUnit> wrapper = new QueryWrapper<>();
        //审核状态
        if(!"".equals(mark) || mark!=null){
            wrapper.eq("check_mark",mark);
        }
        return productUnitDao.selectList(wrapper);
    }


    /**
     * 安全库存变更
     * @param productUnit
     * @return
     */
    @Override
    public int updateProductUnit(ProductUnit productUnit) {
        //修改产品档案分配库存标志
        RepertoryProductFile file = new RepertoryProductFile();
        file.setRepertoryMark("待分配");
        file.setProductId(productUnit.getProductId().toString());
        repertoryProductFileDao.update(file,new QueryWrapper<RepertoryProductFile>().eq("product_id",productUnit.getProductId()));
        productUnit.setCheckMark("待审核");
        productUnit.setCheckTime(null);
        //修改安全库存
        return productUnitDao.updateById(productUnit);
    }





}

